package com.huterox.todoscheduler;

import com.huterox.todoscheduler.common.ConfigurationParse;
import com.huterox.todoscheduler.common.TaskManager;
import com.huterox.todoscheduler.common.impl.DefaultTaskManager;
import com.huterox.todoscheduler.common.impl.PropertiesConfigurationParse;
import com.huterox.todoscheduler.config.ConfigEngine;
import com.huterox.todoscheduler.core.ExecuteManager;
import com.huterox.todoscheduler.core.scheduler.SchedulerEx;
import com.huterox.todoscheduler.core.scheduler.impl.DefaultSchedulerEx;
import com.huterox.todoscheduler.core.suports.TodoListTemplateContext;

import java.io.Serializable;

/**
 * 任务执行器入口
 * */
public class HTodoSchedulerApplication implements Serializable {


    public HTodoSchedulerApplication() {
        run();
    }

    private void run(){
        
            //这个是我们处理配置的组件,这个是我们默认的
            ConfigEngine.corePart.put(ConfigurationParse.class,new PropertiesConfigurationParse());
            //这个是清单模板组件，这里面包括创建IOC容器，然后扫描创建得到模板
            ConfigEngine.corePart.put(TodoListTemplateContext.class,new TodoListTemplateContext());

            /*
             *   这是一条分水岭，到这里，初始化完成，可以正常执行
             * */

            //线程池，完成这个任务清单的执行，通过已经得到的模板，执行模板代理对象
            ConfigEngine.corePart.put(TaskManager.class,new DefaultTaskManager());
            //任务提交执行器具，后面启动一个任务清单就用这个，创建模板代理对象，给到TaskManger
            ConfigEngine.corePart.put(ExecuteManager.class, new ExecuteManager());
            //意外的一些补偿，还有失败任务重新执行的定时器,这个的话也是，需要做到这种处理
            ConfigEngine.corePart.put(SchedulerEx.class,new DefaultSchedulerEx());
    }

    public static void main(String[] args) {

    }
}
